// fs -> file system 文件系统，用于与文件系统进行交互

// 加载模块 
let fs = require('fs');

/* // fs.readFile()方法，用于异步读取文件
fs.readFile('./big-file.txt',(err,data)=>{
    // 读取完成后（可能成功，可能失败）执行该函数

    // err 读取成功时为null，读取失败时为{错误对象}
    // data 读取成功时，读取到的数据

    if (err) {
        console.log( '读取文件失败' );
        return;
    }
    
    // console.log( data );// <Buffer>二进制数据流
    // console.log( data.toString() );// 字符串数据流
    console.log( data + '' );// 字符串数据流
})
console.log( 1234567 ); */

// fs.readFileSync()方法，用于同步读取文件
// try{
//     var data = fs.readFileSync('./big-file.txt');
// }catch(err){}
// console.log( data );
// console.log( 1234567 );


/* // fs.writeFile()方法，用于异步写入文件（会覆盖原来的内容）
// fs.writeFileSync()方法，用于同步写入文件（会覆盖原来的内容）
let str = '123456789123456789123456789';
fs.writeFile('./big-file.txt',str,(err)=>{
    // err 读取成功时为null，读取失败时为{错误对象}
    if (err) {
        console.log( '写入失败。。。' );
        return;
    }
    console.log( '写入成功。。。' );
});
 */

/* // fs.appendFile()方法，用于异步写入文件（在最后追加新的内容）
// fs.appendFileSync()方法，用于同步写入文件（在最后追加新的内容）
let str = '123456789123456789123456789';
fs.appendFile('./big-file.txt',str,(err)=>{
    // err 读取成功时为null，读取失败时为{错误对象}
    if (err) {
        console.log( '写入失败。。。' );
        return;
    }
    console.log( '写入成功。。。' );
}) */


/* // fs.unlink()方法，用于异步删除某个文件
fs.unlink('./hehe.txt',(err)=>{
    if (err) {
        console.log( '删除失败' );
    } else {
        console.log( '删除成功' );
    }
}) */


/* // 写入文件时，文件不存在会自动创建该文件
fs.writeFile('./haha.txt','123456789',(err)=>{
    if (err) {
        console.log( '写入失败' );
    } else {
        console.log( '写入成功' );
    }
})
 */


// fs.mkdir()创建文件夹
// fs.rmdir()删除文件夹
// fs.readdir()读取文件夹
fs.readdir('./',(err,data)=>{
    if (err) {
        console.log( '读取失败' );
    } else {
        console.log( '读取成功',data );
        // data = [
        //     '1-内容回顾.js',
        //     '2-http模块.js',
        //     '3-url模块.js',
        //     '4-stream流.js',
        //     '5-fs模块.js',
        //     'abc',
        //     'big-file.txt',
        //     'day23_尚硅谷_nodejs内置模块.md',
        //     'haha.txt'
        // ]
    }
})
